package de.jmda.gen.java;

import de.jmda.gen.CompoundGenerator;

/**
 * Generator for type bodies like <code>{}</code>.
 *
 * @author roger.jmda@gmail.com
 */
public interface TypeBodyGenerator
		extends CompoundGenerator
{
	StaticPartsGenerator getStaticPartsGenerator();
	InstanceFieldDeclarationsGenerator getInstanceFieldDeclarationsGenerator();
	InstanceMethodDeclarationsGenerator getInstanceMethodDeclarationsGenerator();

	void setStaticPartsGenerator(StaticPartsGenerator generator);
	void setInstanceFieldDeclarationsGenerator(InstanceFieldDeclarationsGenerator generator);
	void setInstanceMethodDeclarationsGenerator(InstanceMethodDeclarationsGenerator generator);

	/**
	 * @NotNull
	 * @return non null static parts generator
	 */
	StaticPartsGenerator demandStaticPartsGenerator();
	/**
	 * @NotNull
	 * @return non null instance method declarations generator
	 */
	InstanceMethodDeclarationsGenerator demandInstanceMethodDeclarationsGenerator();
	/**
	 * @NotNull
	 * @return non null instance field declarations generator
	 */
	InstanceFieldDeclarationsGenerator demandInstanceFieldDeclarationsGenerator();
}